package com.achievement.mapper;

import com.achievement.domain.bo.HonorApplyBookBO;
import com.achievement.domain.bo.HonorApplyInfoBO;
import com.achievement.domain.entity.HonorApplyBookEntity;
import com.achievement.domain.vo.honor.*;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

/**
 * @description biz_honor_apply_book
 * @author HanShicheng
 * @date 2025-02-24
 */
@Service
public interface HonorApplyBookMapper extends BaseMapper<HonorApplyBookEntity> {

    /**
     * 查询所有专家
     **/
    List<AchievementExpertVO> allExpertList();

    AchievementExpertVO ExpertById(@Param(value = "id") String id);

    List<HonorApplyBookReviewVO> listByPage(@Param(value = "bo") HonorApplyBookBO bo, @Param(Constants.WRAPPER) Wrapper<HonorApplyBookEntity> queryWrapper);

    /**
     * 管理员成果评审查看计划下专家信息的专家评审结果
     * @param bo
     * @param queryWrapper
     * @return
     */
    List<HonorApplyBookReviewVO> expertReviewBookListByReviewPlan(@Param(value = "bo") HonorApplyBookBO bo, @Param(Constants.WRAPPER) Wrapper<HonorApplyBookEntity> queryWrapper);
    List<HashMap<String, Integer>> listStatistics(@Param(value = "bo") HonorApplyBookBO bo, @Param(Constants.WRAPPER) Wrapper<HonorApplyBookEntity> queryWrapper);
    HonorApplyBookExpertReviewResultVO honorApplyBookExpertReviewDetailById(@Param(value = "id") String id);

    /**
     * 获奖申报-申报材料列表导出
     * @param bo
     * @return
     */
    List<HonorApplyBookExcelVO> lisExcelByPage(@Param(value = "bo") HonorApplyBookBO bo, @Param(Constants.WRAPPER) Wrapper<HonorApplyBookEntity> queryWrapper);

    /**
     * 成果评审-专家角色获取自己评审的成果列表
     * @param expertId
     * @return
     */
    List<HonorApplyBookByExpertVO> honorApplyBookListByExpert(@Param(value = "reviewStatus") Integer reviewStatus,@Param(value = "expertId") String expertId);
}
